import { ref} from "vue"

import useCustomerStore from '@/store/customer.js'

// 跳转页面
export function aMapNavi() {
	//插件
	var OneNavi = uni.requireNativePlugin('AMap-OneNavi');//2101//插件
	//隐私合规接口
	OneNavi.updatePrivacyShow(true, true);
	OneNavi.updatePrivacyAgree(true);
	let lat=0,long=0;
	function onNaviCallback(type, data,id,latitude,longitude) {
		
		const useCustomer = useCustomerStore();
		//回调处理，参考https://a.amap.com/lbs/static/unzip/Android_Navi_Doc/com/amap/api/navi/INaviInfoCallback.html
		if (type == "onArriveDestination") {
			console.log(parseInt(useCustomer.space(latitude,longitude,lat,long)*1000),'距离算法')
			//到达目的地后回调函数。
			var isEmulaterNavi = data; //true代表是模拟导航到达目的地，false代表实时导航到达目的地
			console.log('到达目的地-完成')
			useCustomer.showOne=true;
			uni.pageScrollTo({ 
				scrollTop: 0, duration: 0 
			});
			//判断是否中途退出
			useCustomer.isEmulaterTrue=false;
			OneNavi.exitRoute();
			
		} else if (type == "onArrivedWayPoint") {
			//驾车路径导航到达某个途经点的回调函数
			var wayID = data; //到达途径点的编号，标号从0开始，依次累加。
		} else if (type == "onBroadcastModeChanged") {
			//播报模式变化回调
			var mode = data; //1-简洁播报 2-详细播报 3-静音
		} else if (type == "onCalculateRouteFailure") {
			//驾车路径规划失败后的回调函数
			var errorInfo = data; //errorInfo-参见PathPlanningErrCode: https://a.amap.com/lbs/static/unzip/Android_Navi_Doc/index.html
		} else if (type == "onCalculateRouteSuccess") {
			//路线规划成功回调
			var ids = data; //路线索引id数组，第一条为12，第二条为13，第三条为14	
		} else if (type == "onDayAndNightModeChanged") {
			//昼夜模式设置变化回调
			var mode = data;  //0-自动切换 1-白天 2-夜间
		} else if (type == "onExitPage") {
			console.log(data,'数据')
			//退出组件或退出组件导航的回调函数
			var pageType = data;  //1：退出导航页面，2:退出组件页面（包含路径规划、搜索和导航）
			//到达目的地0待配送 1 完成 2 送货中
			if(useCustomer.isEmulaterTrue){
				//判断经纬度是否大于800米，大于就是待配送，小于就是送货中
				console.log(parseInt(useCustomer.space(latitude,longitude,lat,long)*1000),'直径距离');
				if(parseInt(useCustomer.space(latitude,longitude,lat,long)*1000)>800){
					console.log('退出导航-待配送')
					if(data==1){ //如果等于1 就提前还原列表数据
						useCustomer.listData=useCustomer.listStatusData;
					}else if(data==2){ //如果等2 改变列表数据状态
						useCustomer.postOrderLogisticStatus(id,0);
						useCustomer.isEmulaterTrue=false;
					}
				}else{
					console.log('退出导航-送货中')
				}
			}
			
		} else if (type == "onGetNavigationText") {
			//导航播报信息回调函数
			var s = data;  //播报文字
		} else if (type == "onInitNaviFailure") {
			//导航初始化失败时的回调函数
		}else if (type == "onLocationChange") {
			 lat=data.coord.latitude;
			 long=data.coord.longitude;
			//当GPS位置有更新时的回调函数
			var location = data; //当前位置的定位信息,字段参考https://a.amap.com/lbs/static/unzip/Android_Navi_Doc/index.html
			// console.log(location,'gus更新')
			// console.log(location,'当GPS位置有更新时')
		}else if (type == "onMapTypeChanged") {
			//组件地图白天黑夜模式切换回调
			var mapType = data; //3-黑夜，4-白天
		}else if (type == "onNaviDirectionChanged") {
			//导航视角变化回调
			var naviMode = data; //导航视角, 1-正北朝上模式 2-车头朝上状态
		}else if (type == "onReCalculateRoute") {
			//重新规划的回调
			var type = data; //type-参见ReCalculateRouteType: https://a.amap.com/lbs/static/unzip/Android_Navi_Doc/index.html
		}else if (type == "onScaleAutoChanged") {
			//比例尺智能缩放设置变化回调
			var enable = data; //是否开启
		}else if (type == "onStartNavi") {
			//启动导航后的回调函数
			var type = data;//1:实时导航 2:模拟导航 3:巡航模式(android) <=0:未开始导航 
			console.log('启动导航-送货中')
			//到达目的地0待配送 1 完成 2 送货中
			if(data==1){
				useCustomer.isEmulaterTrue=true;
				useCustomer.postOrderLogisticStatus(id,2);
			}else if(data==2 && useCustomer.onArriveTrue){
				useCustomer.isEmulaterTrue=true;
				useCustomer.postOrderLogisticStatus(id,2);
			}
		} else if (type == "onStopSpeaking") {
			//停止播报回调。当退出组件导航页，或切换组件的播报模式为静音的时候，会触发该回调
		} else if (type == "onStrategyChanged") {
			//切换算路偏好回调
		    var strategy = data; //切换后偏好 参考https://a.amap.com/lbs/static/unzip/Android_Navi_Doc/index.html
		} 
	}
	
	//
	function showRoute(latitude,longitude,name,id) {
		const useCustomer = useCustomerStore();
		//开始导航，参数全部可选
		OneNavi.showRoute({
			//start:this.start,//起点，不设置当前位置做为起点
			//wayPoints:this.wayPoints,//途径点，不超过3个
			end:{
					coordinate:{
						latitude,longitude
						// latitude:29.588462,
						// longitude:106.540008
						// latitude:29.72097552154459,
						// longitude:106.62744411176179
					},
					name,
					poiId:name
				},//终点,
			pageType:0,//页面类型，0:进入路线页面， 1：进入导航页面
			//broadcastMode:2,//设置播报模式 1-简洁播报 2-详细播报 3-静音模式
			//carDirectionMode:1, //设置导航视角,1-正北向上 2-车头向上
			//carInfo:this.carInfo,//设置车辆信息，进行尾号限行与货车导航
			//dayAndNightMode:0, //设置导航页面昼夜模式,0-自动切换 1-白天 2-夜间
			//multipleRouteNaviMode:true, //设置是否多路线导航模式，true:多路线导航模式, false:单路线导航模式 默认为true
			naviMode:1, //1-实时导航 2-模拟导航
			//needCalculateRouteWhenPresent:true,//启动组件进行直接导航时，设置是否进行算路，true : 算路，false : 启动组件以后不会算路直接开启导航。默认为true。
			needDestroyDriveManagerInstanceWhenNaviExit:true,//退出导航组件是否销毁导航实例,true-退出导航页时停止导航，退出组件时销毁导航 false-退出组件不会销毁导航；当使用组件直接导航时，退出导航页也不会停止导航
			//routeStrategy:10, //设置组件规划路线的策略，默认为速度优先+躲避拥堵+距离较短,参考https://a.amap.com/lbs/static/unzip/Android_Navi_Doc/com/amap/api/navi/enums/PathPlanningStrategy.html
			//scaleAutoChangeEnable:true, //设置比例尺智能缩放是否开启
			//secondActionVisible:false, //设置组件导航页是否显示下下个路口引导，默认不显示,注意：该接口仅驾车模式有效
			//showCrossImage:true, //设置驾车导航时是否显示路口放大图
			showExitNaviDialog:true, //设置退出导航组件是否显示退出弹框
			//showRouteStrategyPreferenceView:false, //表示设置路径规划偏好策略页面是否显示
			//showVoiceSetings:false, //是否展示导航语音播报设置项
			theme:0,  //组件主题 范围0-2分别表示蓝色，白色， 黑色		
			trafficEnabled:true, //导航组件路况开关是否打开, 默认为false
			useInnerVoice:true//是否使用内部语音播报 注意：6.1.0版本开始，默认值改为true
		}, function(res) {
			// console.log(res,res.type, res.data,id,latitude,longitude,'sss')
			if(useCustomer.tabCurrent==0){ //只有待配送列表才显示
				onNaviCallback(res.type, res.data,id,latitude,longitude);
			}
		});
	}
	
	//直接导航
	function startNaviDirectly(latitude,longitude,name) {
		const useCustomer = useCustomerStore();
		//直接进入导航页面
		OneNavi.showRoute({
			pageType:1,//0:进入路线页面， 1：进入导航页面
			//start:this.start,//起点
			end:{coordinate:{latitude,longitude},name},//终点
			naviMode:2, //1-实时导航 2-模拟导航
			needDestroyDriveManagerInstanceWhenNaviExit:true
		}, function(res) {
			//回调处理
			if(useCustomer.tabCurrent==0){
				onNaviCallback(res.type, res.data);
			}
			
		});
	}
	
	return {
	    showRoute,
			startNaviDirectly
	}
}